大家好,我是毛毛。ヾ(´∀ ˋ)ノ
那就開始今天的解題吧~
Determine if a 9 x 9
Sudoku board is valid. Only the filled cells need to be validated according to the following rules:
Note:
Example 1:
Input: board =
[["5","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: true
Example 2:
Input: board =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
Output: false
Explanation: Same as Example 1, except with the 5 in the top left corner being modified to 8. Since there are two 8's in the top left 3x3 sub-box, it is invalid.
Constraints:
board.length == 9
board[i].length == 9
board[i][j]
is a digit 1-9
or '.'
.簡單來說就是判斷是不是合乎規則的數獨~
分別判斷行、列跟九塊九宮格是否都有符合只出現一次的1~9
class Solution:
def isValidSudoku(self, board: List[List[str]]) -> bool:
row = []
col = []
subBox = []
for seq1, rowVal in enumerate(board, start=0):
for seq2, colVal in enumerate(rowVal, start=0):
if colVal is not ".":
# Row part
if (seq1, colVal) not in row:
row.append((seq1, colVal))
else:
return False
# Column part
if (seq2, colVal) not in col:
col.append((seq2, colVal))
else:
return False
# subBox part
if (int(seq1/3), int(seq2/3), colVal) not in subBox:
subBox.append((int(seq1/3), int(seq2/3), colVal))
else:
return False
return True
今天就到這邊啦~
大家明天見